package cn.com.czpb.client.api;

import cn.com.czpb.client.model.WeatherBean;
import cn.com.czpb.client.model.active.ActiveListEntity;
import cn.com.czpb.client.model.base.BaseEntity;

import cn.com.czpb.client.model.diantai.RadioEntity;
import cn.com.czpb.client.model.diantai.RadioTypeEntity;
import cn.com.czpb.client.model.live.LiveDetailEntity;
import cn.com.czpb.client.model.live.LiveListEntity;
import cn.com.czpb.client.model.livenew.LiveNewListEntity;
import cn.com.czpb.client.model.livenew.LiveTypeEntity;
import cn.com.czpb.client.model.nanning.FuWuEntity;
import cn.com.czpb.client.model.news.AlbumDetailEntity;

import cn.com.czpb.client.model.news.AreaChannelEntity;
import cn.com.czpb.client.model.news.AreaLocationChannelEntity;
import cn.com.czpb.client.model.news.ChildsEntity;
import cn.com.czpb.client.model.news.CityBeanEntity;
import cn.com.czpb.client.model.news.CityFlashEntity;
import cn.com.czpb.client.model.news.ComResultEntity;
import cn.com.czpb.client.model.news.CommEntity;
import cn.com.czpb.client.model.news.CommenEntity;
import cn.com.czpb.client.model.news.EmptyEntityList;
import cn.com.czpb.client.model.news.FuWuMainEntity;
import cn.com.czpb.client.model.news.HighriseEntity;
import cn.com.czpb.client.model.news.HotSearchEntity;
import cn.com.czpb.client.model.news.IsCollectionEntity;
import cn.com.czpb.client.model.news.NewsChannelEntity;
import cn.com.czpb.client.model.news.NewsDetailEntity;
import cn.com.czpb.client.model.news.NewsFlashEntity;
import cn.com.czpb.client.model.news.NewsListEntity;
import cn.com.czpb.client.model.news.NewsRelateEntity;
import cn.com.czpb.client.model.news.NewsTagEntity;
import cn.com.czpb.client.model.news.PraiseNumEntity;
import cn.com.czpb.client.model.news.SubjectTypeEntity;
import cn.com.czpb.client.model.newsnew.NewsNewListEntity;
import cn.com.czpb.client.model.newspager.NewsPagerEntity;
import cn.com.czpb.client.model.subscribe.FocusUserDetailEntity;
import cn.com.czpb.client.model.subscribe.IsfocusUserEntity;
import cn.com.czpb.client.model.subscribe.MySubscribeEntity;
import cn.com.czpb.client.model.subscribe.MySubscribeListEntity;
import cn.com.czpb.client.model.subscribe.SubscribeListEntity;

import cn.com.czpb.client.model.subscribe.SubscribeListSecondEntity;
import cn.com.czpb.client.model.subscribe.WriterListEntity;
import cn.com.czpb.client.model.usercenter.CollectEntity;
import cn.com.czpb.client.model.usercenter.ComEntity;
import cn.com.czpb.client.model.usercenter.EmptyEntity;
import cn.com.czpb.client.model.usercenter.HistoryEntity;
import cn.com.czpb.client.model.usercenter.IsInvitedEntity;
import cn.com.czpb.client.model.usercenter.IsSignEntity;

import cn.com.czpb.client.model.usercenter.LevelEntity;
import cn.com.czpb.client.model.usercenter.MessageEntity;

import cn.com.czpb.client.model.usercenter.MyInviteEntity;
import cn.com.czpb.client.model.usercenter.NotifyEntity;
import cn.com.czpb.client.model.usercenter.UserEntity;
import cn.com.czpb.client.model.version.VersionEntity;
import cn.com.czpb.client.model.video.VideoDetialEntity;
import cn.com.czpb.client.model.video.VideoItenEntity;
import cn.com.czpb.client.model.welcome.ImageEntity;

import java.util.Map;

import okhttp3.ResponseBody;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
import rx.Observable;

/**
 * Created by 猪猪侠 on 2017/6/30.
 */

public interface BaseHttpService {


    //获取开屏图接口
    @POST(InterfaceJsonfile.mAdPic)
    Observable<ImageEntity> welcomeAd();

    //获取栏目
//    @FormUrlEncoded
//    @POST(InterfaceJsonfile.CHANNELLIST)
//    Observable<NewsChannelEntity> newsChannellist(@FieldMap Map<String, String> map);


    //获取栏目demo
    @FormUrlEncoded
    @POST(InterfaceJsonfile.CHANNELLIST)
    Observable<NewsChannelEntity> newsChannellistNew(@FieldMap Map<String, String> map);


    //检查版本更新;
    @POST(InterfaceJsonfile.UPDATA)
    Observable<VersionEntity> checkUpdata();

    //更新app 下载地址
    @Streaming
    @GET
    Observable<ResponseBody> downLoadFile(@Url String filePath);

    /**
     * news
     */
    //新闻模块--幻灯数据
    @FormUrlEncoded
    @POST(InterfaceJsonfile.FLASH)
    Observable<NewsFlashEntity> newsFlashlist(@FieldMap Map<String, String> map);

    //新闻模块--新闻列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSLIST)
    Observable<NewsListEntity> newslist(@FieldMap(encoded = true) Map<String, String> map);

    //新闻详情--获取新闻详情接口
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSDETAIL)
    Observable<NewsDetailEntity> newsDetail(@FieldMap Map<String, String> map);

    //新闻详情--获取新闻详情接口
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSDETAILVOTE)
    Observable<NewsDetailEntity> newsDetailvote(@FieldMap Map<String, String> map);


    //新闻详情--发表评论接口
    @FormUrlEncoded
    @POST(InterfaceJsonfile.PUBLISHCOMMENT)
    Observable<ComResultEntity> newsComment(@FieldMap(encoded = true) Map<String, String> map);

    //新闻详情--判断是否收藏状态接口
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ISCELLECTION)
    Observable<IsCollectionEntity> newsIsCollection(@FieldMap Map<String, String> map);

    //新闻详情--添加收藏
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ADDCOLLECTION)
    Observable<IsCollectionEntity> newsAddCollection(@FieldMap Map<String, String> map);

    //新闻模块--不感兴趣列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSLOSEINTERESTTAGS)
    Observable<NewsTagEntity> newsLoseInterestTags(@FieldMap Map<String, String> map);

    //新闻模块--提交不感兴趣
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSLOSEINTEREST)
    Observable<BaseEntity> newsLoseInterest(@FieldMap Map<String, String> map);


    //新闻模块-相关推荐新闻
    @FormUrlEncoded
    @POST(InterfaceJsonfile.RELATENEWSLIST)
    Observable<NewsRelateEntity> newsRelageList(@FieldMap Map<String, String> map);

    //对内容点赞
    @FormUrlEncoded
    @POST(InterfaceJsonfile.PRAISEONCONTENT)
    Observable<PraiseNumEntity> praiseContent(@FieldMap Map<String, String> map);

    //直播赞
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LIVEPRAISE)
    Observable<PraiseNumEntity> livePraise(@FieldMap Map<String, String> map);

    //直播评论
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LIVECOMMENT)
    Observable<ComResultEntity> liveComment(@FieldMap(encoded = true) Map<String, String> map);

    //直播收藏
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LIVECOLLECTION)
    Observable<IsCollectionEntity> liveCollection(@FieldMap Map<String, String> map);

    //对内容点CAI
    @FormUrlEncoded
    @POST(InterfaceJsonfile.PRAISEDOWNONCONTENT)
    Observable<BaseEntity> praiseDownContent(@FieldMap Map<String, String> map);

    //地域栏目列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.AREALIST)
    Observable<AreaChannelEntity> getArealist(@FieldMap Map<String, String> map);


    //地域栏目列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.AREALIST)
    Observable<AreaLocationChannelEntity> getArealistLocation(@FieldMap Map<String, String> map);


    //地域栏目下的新闻列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.AREANEWSLIST)
    Observable<NewsListEntity> getAreaNewsList(@FieldMap(encoded = true) Map<String, String> map);

    //地域栏目下的轮播图
    @FormUrlEncoded
    @POST(InterfaceJsonfile.AREAFLASH)
    Observable<CityFlashEntity> areaFlashlist(@FieldMap(encoded = true) Map<String, String> map);

    //地域栏目下的服务列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.AREAFUWULIST)
    Observable<FuWuEntity> areaFuWuList(@FieldMap Map<String, String> map);


    //服务列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.FUWULIST)
    Observable<FuWuEntity> GETFUWULIST(@FieldMap Map<String, String> map);

    //服务列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSCOLUMNSLIST)
    Observable<ChildsEntity> newsColumnsList(@FieldMap Map<String, String> map);

    //首页的服务列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.AREAFUWUMAINLIST)
    Observable<FuWuMainEntity> areamainFuWuList(@FieldMap Map<String, String> map);
    /**
     * video
     */
    //视频--视频分类
    @FormUrlEncoded
    @POST(InterfaceJsonfile.VIDEOTABS)
    Observable<NewsChannelEntity> videoTypes(@FieldMap(encoded = true) Map<String, String> map);
    //视频--视频列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.VIDEOLIST)
    Observable<VideoItenEntity> videoList(@FieldMap(encoded = true) Map<String, String> map);

    //视频--视频详情
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETVIDEOINFO)
    Observable<VideoDetialEntity> getvideoinfo(@FieldMap(encoded = true) Map<String, String> map);

    //视频--视频详情
    @FormUrlEncoded
    @POST(InterfaceJsonfile.REPORTUSER)
    Observable<EmptyEntity> reportUser(@FieldMap Map<String, String> map);


    //登陆
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LOGIN)
    Observable<UserEntity> login(@FieldMap Map<String, String> map);

    //修改密码
    @FormUrlEncoded
    @POST(InterfaceJsonfile.CHANGEPWD)
    Observable<EmptyEntityList> changePassWord(@FieldMap Map<String, String> map);

    //找回密码
    @FormUrlEncoded
    @POST(InterfaceJsonfile.FINDPWD)
    Observable<EmptyEntityList> findPw(@FieldMap Map<String, String> map);

    //找回密码
    @FormUrlEncoded
    @POST(InterfaceJsonfile.thirdLogin)
    Observable<UserEntity> thirdLogin(@FieldMap(encoded = true) Map<String, String> map);

    //注册
    @FormUrlEncoded
    @POST(InterfaceJsonfile.REGISTER)
    Observable<UserEntity> register(@FieldMap Map<String, String> map);

    //修改用户信息
    @FormUrlEncoded
    @POST(InterfaceJsonfile.CHANGEPINFO)
    Observable<UserEntity> changeUser(@FieldMap(encoded = true) Map<String, String> map);

    @FormUrlEncoded
    @POST(InterfaceJsonfile.CHANGEPINFO)
    Observable<UserEntity> changeUser_PHOTO(@FieldMap Map<String, String> map);

    //普通用户信息
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETUSERINFO)
    Observable<UserEntity> getUserInfo(@FieldMap Map<String, String> map);


    //发表反馈
    @FormUrlEncoded
    @POST(InterfaceJsonfile.feedback)
    Observable<EmptyEntity> userSuggest(@FieldMap Map<String, String> map);

    //收藏
    @FormUrlEncoded
    @POST(InterfaceJsonfile.COLLECTIONLIST)
    Observable<CollectEntity> collection(@FieldMap Map<String, String> map);

    //历史记录
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETHISTORY)
    Observable<HistoryEntity> history(@FieldMap Map<String, String> map);

    //邀请记录
    @FormUrlEncoded
    @POST(InterfaceJsonfile.MY_INVITE)
    Observable<MyInviteEntity> myinvite(@FieldMap Map<String,String>map);

    //是否被邀请
    @FormUrlEncoded
    @POST(InterfaceJsonfile.IS_INVITED)
    Observable<IsInvitedEntity> isinvited(@FieldMap Map<String,String>map);

    //提交邀请码
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SUBMITCODE)
    Observable<IsInvitedEntity> submitcode(@FieldMap Map<String,String>map);
    //删除收藏
    @FormUrlEncoded
    @POST(InterfaceJsonfile.COLLECTION_DELETE)
    Observable<EmptyEntity> deletecollection(@FieldMap Map<String, String> map);

    //我的评论
    @FormUrlEncoded
    @POST(InterfaceJsonfile.COMM_MY)
    Observable<ComEntity> my_comm(@FieldMap Map<String, String> map);

    //我的消息
    @FormUrlEncoded
    @POST(InterfaceJsonfile.MYMESSAGE)
    Observable<MessageEntity> my_message(@FieldMap Map<String, String> map);

    //我的消息
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SYSTEMNOTITY)
    Observable<NotifyEntity> my_notity(@FieldMap Map<String, String> map);

    //新闻详情--评论列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.CHECKCOMMENT)
    Observable<CommenEntity> newsCommentList(@FieldMap Map<String, String> map);

    //新闻--热门搜索
    @GET(InterfaceJsonfile.HOTSEARCH)
    Observable<HotSearchEntity> newsHotSearch();

    //新闻--搜索新闻
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SEARCH)
    Observable<NewsListEntity> newsSearch(@FieldMap Map<String, String> map);

    //新闻--添加统计接口
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSCOUNT)
    Observable<BaseEntity> newsAddCount(@FieldMap Map<String, String> map);

    //图集--详情接口
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ALBUMIINFO)
    Observable<AlbumDetailEntity> albumDetail(@FieldMap Map<String, String> map);


    //专题--专题栏目
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SUBJECTCOLUMNSLIST)
    Observable<SubjectTypeEntity> newsSubjectColumn(@FieldMap Map<String, String> map);

    //专题--栏目下的新闻列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SUBJECTNEWSLIST)
    Observable<NewsListEntity> newsSubjectNewsList(@FieldMap Map<String, String> map);


    /**
     * subscribe
     */
    //达人号--栏目分类
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SUBSCRIBELIST)
    Observable<SubscribeListEntity> subscribeList(@FieldMap Map<String, String> map);

    //达人号--二级分类
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SUBSCRIBELIST_SECOND)
    Observable<SubscribeListSecondEntity> subscribeSecondList(@FieldMap Map<String, String> map);

    //我订阅的达人号发表的纹章
    @FormUrlEncoded
    @POST(InterfaceJsonfile.MYSUBSCRIBELIST)
    Observable<MySubscribeEntity> mySubscribeList(@FieldMap Map<String, String> map);

    //订阅达人号
    @FormUrlEncoded
    @POST(InterfaceJsonfile.FOCUSUSER)
    Observable<BaseEntity> focusUser(@FieldMap Map<String, String> map);

    //取消订阅
    @FormUrlEncoded
    @POST(InterfaceJsonfile.REMOVEFOCUSUSER)
    Observable<BaseEntity> removeFocusUser(@FieldMap Map<String, String> map);

    //是否订阅
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ISFOCUSUSER)
    Observable<IsfocusUserEntity> isFocusUser(@FieldMap Map<String, String> map);

    //我的订阅列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.MYFOCUSUSERLIST)
    Observable<MySubscribeListEntity> myFocusUserlist(@FieldMap Map<String, String> map);

    //达人号个人主页
    @FormUrlEncoded
    @POST(InterfaceJsonfile.FOCUSUSERDETAIL)
    Observable<FocusUserDetailEntity> focusUserDetail(@FieldMap Map<String, String> map);


    //达人号发表的纹章
    @FormUrlEncoded
    @POST(InterfaceJsonfile.WRITERNEWSLIST)
    Observable<WriterListEntity> writerNewsList(@FieldMap Map<String, String> map);

    //达人号搜索
    @FormUrlEncoded
    @POST(InterfaceJsonfile.WRITERSEARCH)
    Observable<SubscribeListSecondEntity> writerSearch(@FieldMap Map<String, String> map);

    /**
     * huodng
     *
     * @param map
     * @return
     */
    //活动列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ACTIVITESLIST)
    Observable<ActiveListEntity> activelist(@FieldMap Map<String, String> map);

    //新闻评论列表列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSCOMMENT)
    Observable<CommEntity> AllNewsComment(@FieldMap Map<String, String> map);

    //我的动态
    @FormUrlEncoded
    @POST(InterfaceJsonfile.USERDYNAMIC)
    Observable<CommEntity> UserDyNamic(@FieldMap Map<String, String> map);

    //新闻评论点赞
    @FormUrlEncoded
    @POST(InterfaceJsonfile.PRAISE)
    Observable<ComResultEntity> PraiseOnComment(@FieldMap Map<String, String> map);

    //用户签到
    @FormUrlEncoded
    @POST(InterfaceJsonfile.SIGN)
    Observable<EmptyEntity> UserSign(@FieldMap Map<String, String> map);

    //用户是否签到
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ISSIGN)
    Observable<IsSignEntity> isSign(@FieldMap Map<String, String> map);

    //我的等级
    @FormUrlEncoded
    @POST(InterfaceJsonfile.MYLEVEL)
    Observable<LevelEntity> MyLevel(@FieldMap Map<String, String> map);

    //我的等级
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ADDVISITE)
    Observable<EmptyEntityList> addvisit(@FieldMap Map<String, String> map);

    //高层
    @FormUrlEncoded
    @POST(InterfaceJsonfile.HIGHRISELIST)
    Observable<HighriseEntity> highriselist(@FieldMap Map<String, String> map);

    //高层
    @FormUrlEncoded
    @POST(InterfaceJsonfile.HIGHRISENEWSLIST)
    Observable<NewsListEntity> highrisenewslist(@FieldMap Map<String, String> map);

    //是否点赞
    @FormUrlEncoded
    @POST(InterfaceJsonfile.ISPRAISE)
    Observable<BaseEntity> isPraise(@FieldMap Map<String, String> map);


    //政务下的新闻
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GOVERMENTENEWSLIST)
    Observable<NewsListEntity> govermentlist(@FieldMap(encoded = true) Map<String, String> map);



//    //天气接口
//    @FormUrlEncoded
//    @POST(InterfaceJsonfile.WEATHER)
//    Observable<WeatherBean> getWeather(@FieldMap(encoded = true) Map<String, String> map);

    //天气接口
    @GET
    Observable<WeatherBean> getWeather(@Url String url);


    //直播列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LIVELIST)
    Observable<LiveListEntity> liveList(@FieldMap(encoded = true) Map<String, String> map);

    //直播列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LIVEDETAIL)
    Observable<LiveDetailEntity> livedetail(@FieldMap(encoded = true) Map<String, String> map);

    //直播幻灯
    @FormUrlEncoded
    @POST(InterfaceJsonfile.LIVEFLASH)
    Observable<LiveListEntity> liveFlashList(@FieldMap(encoded = true) Map<String, String> map);


    //数字报 列表
    @GET(InterfaceJsonfile.PAGERLIST)
    Observable<NewsPagerEntity> getPagerList();



    //ip定位
    @GET("getIpInfo.php?ip=myip")
    Observable<CityBeanEntity> getCity();

    //直播列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETLIVTTYPE)
    Observable<LiveTypeEntity> getliveType(@FieldMap(encoded = true) Map<String, String> map);
    //直播列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETLIVTLIST)
    Observable<LiveNewListEntity> getliveList(@FieldMap(encoded = true) Map<String, String> map);
    //直播列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETDIANTAITTYPE)
    Observable<RadioTypeEntity> getdiantaiType(@FieldMap(encoded = true) Map<String, String> map);
    //直播列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.GETDIANTAITLIST)
    Observable<RadioEntity> getdiantaiList(@FieldMap(encoded = true) Map<String, String> map);



    //新闻模块--新闻列表
    @FormUrlEncoded
    @POST(InterfaceJsonfile.NEWSLIST)
    Observable<NewsListEntity> getnewslist(@FieldMap(encoded = true) Map<String, String> map);
}
